<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: navo/algorithm/nonlinear/binary/sblnk.h源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li class="current"><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>文件列表</span></a></li>
      <li><a href="globals.html"><span>全局定义</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<h1>navo/algorithm/nonlinear/binary/sblnk.h</h1>  </div>
</div>
<div class="contents">
<a href="sblnk_8h.html">浏览该文件的文档。</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */</span>
<a name="l00011"></a>00011 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span><span class="preprocessor">#pragma once</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* #ifdef _MSC_VER */</span>
<a name="l00014"></a>00014 
<a name="l00015"></a>00015 <span class="preprocessor">#ifndef __NV_SBLNK__</span>
<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define __NV_SBLNK__</span>
<a name="l00017"></a>00017 <span class="preprocessor"></span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &quot;<a class="code" href="cdef_8h.html" title="Definitions and declarations for common constants, types, variables.">../../../port/cdef.h</a>&quot;</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include &quot;<a class="code" href="integer_8h.html" title="Provides standard integer types.">../../../port/integer.h</a>&quot;</span>
<a name="l00020"></a>00020 
<a name="l00021"></a>00021 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
<a name="l00023"></a>00023 <span class="preprocessor">#endif  </span><span class="comment">/* #ifdef __cplusplus */</span>
<a name="l00024"></a>00024 
<a name="l00039"></a><a class="code" href="struct____sblnk__node.html">00039</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">__sblnk_node</a> {
<a name="l00041"></a><a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06">00041</a>     <span class="keyword">struct </span><a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">__sblnk_node</a>* <a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06" title="父节点">parent</a>;
<a name="l00043"></a><a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7">00043</a>     <span class="keyword">struct </span><a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">__sblnk_node</a>* <a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a>;
<a name="l00045"></a><a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d">00045</a>     <span class="keyword">struct </span><a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">__sblnk_node</a>* <a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a>;
<a name="l00047"></a><a class="code" href="struct____sblnk__node.html#a854352f53b148adc24983a58a1866d66">00047</a>     <span class="keywordtype">size_t</span> <a class="code" href="struct____sblnk__node.html#a854352f53b148adc24983a58a1866d66" title="子树大小">size</a>;
<a name="l00048"></a>00048 }<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gacd146cf1a43aedc708dd063d3c7c1d21" title="节点">sblnk_node</a>, *<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaed239b78d6bc2fb4207b3139dc046294" title="迭代器">sblnk_iter</a>;
<a name="l00049"></a>00049 
<a name="l00054"></a><a class="code" href="structsblnk__root.html">00054</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00056"></a><a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4">00056</a>     <a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">sblnk_node</a>* <a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>;
<a name="l00057"></a>00057 }<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>;
<a name="l00058"></a>00058 
<a name="l00063"></a><a class="code" href="structsblnk__info.html">00063</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00065"></a><a class="code" href="structsblnk__info.html#a76d971a3c552bc58ba9f0d5fceae9806">00065</a>     <span class="keywordtype">size_t</span> <a class="code" href="structsblnk__info.html#a76d971a3c552bc58ba9f0d5fceae9806" title="节点数">count</a>;
<a name="l00067"></a><a class="code" href="structsblnk__info.html#a820c167ceaaa9759b0ca2695d22db55c">00067</a>     <span class="keywordtype">size_t</span> <a class="code" href="structsblnk__info.html#a820c167ceaaa9759b0ca2695d22db55c" title="深度">depth</a>;
<a name="l00069"></a><a class="code" href="structsblnk__info.html#a62f3b2ad4f6c6147d1bb9a71dd8c9656">00069</a>     <span class="keywordtype">size_t</span> <a class="code" href="structsblnk__info.html#a62f3b2ad4f6c6147d1bb9a71dd8c9656" title="叶子数">leafs</a>;
<a name="l00070"></a>00070 }<a class="code" href="structsblnk__info.html" title="树信息表">sblnk_info</a>;
<a name="l00071"></a>00071 
<a name="l00083"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga77426ccc7b1fb7bb23e58872fba730c2">00083</a> <span class="preprocessor">#define SBLNK_ROOT(name) sblnk_root name = {NULL}</span>
<a name="l00084"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga84848fd6b4aaa586f512407a61d41744">00084</a> <span class="preprocessor"></span><span class="preprocessor">#define SBLNK_NODE(name) sblnk_node name = {NULL, NULL, NULL, 0}</span>
<a name="l00085"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gad0c44e99f672d370c01aaac8c695c4de">00085</a> <span class="preprocessor"></span><span class="preprocessor">#define SBLNK_INFO(name) sblnk_info name = {0, 0, 0}</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>
<a name="l00093"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga4af164439491a4ca79da044842819995">00093</a> <span class="keyword">typedef</span> int (*<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga4af164439491a4ca79da044842819995" title="单参数回调函数指针">sblnk_pr1</a>)(<a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">sblnk_node</a>*);
<a name="l00094"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa9b184f17ebd6de7ee301b2be4b40d50">00094</a> <span class="keyword">typedef</span> int (*<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa9b184f17ebd6de7ee301b2be4b40d50" title="双参数回调函数指针">sblnk_pr2</a>)(<a class="code" href="struct____sblnk__node.html" title="大小平衡树节点">sblnk_node</a>*, sblnk_node*);
<a name="l00095"></a>00095 
<a name="l00104"></a>00104 NV_API <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gad792d3ec9e12043ac935238471075fd5" title="计算两个节点的迭代距离">sblnk_distance</a>(sblnk_iter first, sblnk_iter last);
<a name="l00105"></a>00105 
<a name="l00114"></a>00114 NV_API <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga85091b37cced90e27aace1ed466f15b9" title="计算迭代器的正向索引">sblnk_index_of</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_iter itr);
<a name="l00115"></a>00115 
<a name="l00124"></a>00124 NV_API <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gabe9efb0165493808f4e6896a70eda6de" title="计算迭代器的逆向索引">sblnk_reverse_index_of</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_iter itr);
<a name="l00125"></a>00125 
<a name="l00133"></a>00133 NV_API <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga0d2affd3956b699ba994f82a13b3cf2b" title="计算树的深度">sblnk_depth</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root);
<a name="l00134"></a>00134 
<a name="l00142"></a>00142 NV_API <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gab7ece6c8087440945d0a50d8cd81b423" title="计算树的叶子数">sblnk_leafs</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root);
<a name="l00143"></a>00143 
<a name="l00151"></a>00151 NV_API <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaf5442bb764fe7fd9ff8d796dff0551e0" title="获取树的信息，包括节点数、深度、叶子数">sblnk_get_info</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, <a class="code" href="structsblnk__info.html" title="树信息表">sblnk_info</a>* info);
<a name="l00152"></a>00152 
<a name="l00196"></a>00196 NV_API <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga19c2e9e6ec1788d13f34c1f230b47d02" title="插入节点后，对树进行调整">sblnk_maintain</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_node* node, 
<a name="l00197"></a>00197                                 sblnk_node* parent);
<a name="l00198"></a>00198 
<a name="l00205"></a>00205 NV_API <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga87e9e7a65a0850fb3b02455a2a9e54d2" title="移除某个节点">sblnk_erase</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_node* entry);
<a name="l00206"></a>00206 
<a name="l00220"></a>00220 NV_API <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9028bdd9eb8000ed59e1a512af48a37a" title="移除区域内的节点">sblnk_erases</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_iter begin, 
<a name="l00221"></a>00221                             sblnk_iter end, <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga4af164439491a4ca79da044842819995" title="单参数回调函数指针">sblnk_pr1</a> erase_handler);
<a name="l00222"></a>00222 
<a name="l00234"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gad68cb541128675d3c8a165e6d0d4d229">00234</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gad68cb541128675d3c8a165e6d0d4d229" title="初始化树根">sblnk_init</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00235"></a>00235 {
<a name="l00236"></a>00236     root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a> = NULL;
<a name="l00237"></a>00237 }
<a name="l00238"></a>00238 
<a name="l00253"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga8b2053d41e14a1f256bbf06168ec97fe">00253</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga8b2053d41e14a1f256bbf06168ec97fe" title="判断树是否为空">sblnk_empty</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00254"></a>00254 {
<a name="l00255"></a>00255     <span class="keywordflow">return</span> !root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>;
<a name="l00256"></a>00256 }
<a name="l00257"></a>00257 
<a name="l00258"></a>00258 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> __sblnk_singular(sblnk_node* root)
<a name="l00259"></a>00259 {
<a name="l00260"></a>00260     <span class="keywordflow">return</span> root &amp;&amp; !root-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a> &amp;&amp; !root-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a>;
<a name="l00261"></a>00261 }
<a name="l00262"></a>00262 
<a name="l00277"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gabbfd4bc4031072dd875a16e2eef0e18c">00277</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gabbfd4bc4031072dd875a16e2eef0e18c" title="判断树是否只有单个节点">sblnk_singular</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00278"></a>00278 {
<a name="l00279"></a>00279     <span class="keywordflow">return</span> __sblnk_singular(root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>);
<a name="l00280"></a>00280 }
<a name="l00281"></a>00281 
<a name="l00311"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9ade2ee98cf812276ab751ead800e5bc">00311</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9ade2ee98cf812276ab751ead800e5bc" title="判断树是否可以序列化">sblnk_serialable</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00312"></a>00312 {
<a name="l00313"></a>00313     <span class="keywordflow">return</span> !!root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>;
<a name="l00314"></a>00314 }
<a name="l00315"></a>00315 
<a name="l00316"></a>00316 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> __sblnk_count(sblnk_node* root)
<a name="l00317"></a>00317 {
<a name="l00318"></a>00318     <span class="keywordflow">if</span> (root)
<a name="l00319"></a>00319         <span class="keywordflow">return</span> root-&gt;<a class="code" href="struct____sblnk__node.html#a854352f53b148adc24983a58a1866d66" title="子树大小">size</a> + 1;
<a name="l00320"></a>00320     <span class="keywordflow">return</span> 0;
<a name="l00321"></a>00321 }
<a name="l00322"></a>00322 
<a name="l00329"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga70443373b0ae8f6e9c8dbd01ab276d8b">00329</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga70443373b0ae8f6e9c8dbd01ab276d8b" title="获取树的节点总数">sblnk_count</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00330"></a>00330 {
<a name="l00331"></a>00331     <span class="keywordflow">return</span> __sblnk_count(root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>);
<a name="l00332"></a>00332 }
<a name="l00333"></a>00333 
<a name="l00341"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gab12dea4f3e2f3ab2709e8c458056f6b2">00341</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gab12dea4f3e2f3ab2709e8c458056f6b2" title="得到左子节点">sblnk_left</a>(sblnk_node* node)
<a name="l00342"></a>00342 {
<a name="l00343"></a>00343     <span class="keywordflow">return</span> node-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a>;
<a name="l00344"></a>00344 }
<a name="l00345"></a>00345 
<a name="l00353"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2238721162bee093678cdd7aecb11990">00353</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2238721162bee093678cdd7aecb11990" title="得到右子节点">sblnk_right</a>(sblnk_node* node)
<a name="l00354"></a>00354 {
<a name="l00355"></a>00355     <span class="keywordflow">return</span> node-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a>;
<a name="l00356"></a>00356 }
<a name="l00357"></a>00357 
<a name="l00364"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2b84c86f24154173661a6b15a7f8392f">00364</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2b84c86f24154173661a6b15a7f8392f" title="得到父节点">sblnk_parent</a>(sblnk_node* node)
<a name="l00365"></a>00365 {
<a name="l00366"></a>00366     <span class="keywordflow">return</span> node-&gt;<a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06" title="父节点">parent</a>;
<a name="l00367"></a>00367 }
<a name="l00368"></a>00368 
<a name="l00375"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2c8271615d973239ac49bc721263ffd4">00375</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2c8271615d973239ac49bc721263ffd4" title="得到节点的子树大小">sblnk_size</a>(sblnk_node* node)
<a name="l00376"></a>00376 {
<a name="l00377"></a>00377     <span class="keywordflow">return</span> node-&gt;<a class="code" href="struct____sblnk__node.html#a854352f53b148adc24983a58a1866d66" title="子树大小">size</a>;
<a name="l00378"></a>00378 }
<a name="l00379"></a>00379 
<a name="l00388"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga80e18a0fd09125d1fd04c420848adee6">00388</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga80e18a0fd09125d1fd04c420848adee6" title="判断当前节点是否是根节点">sblnk_is_root</a>(sblnk_iter itr)
<a name="l00389"></a>00389 {
<a name="l00390"></a>00390     <span class="keywordflow">return</span> !itr-&gt;<a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06" title="父节点">parent</a>;
<a name="l00391"></a>00391 }
<a name="l00392"></a>00392 
<a name="l00401"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga279e84ec3fd30ebd6ab8a2bec720c320">00401</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga279e84ec3fd30ebd6ab8a2bec720c320" title="判断当前节点是否是叶子节点">sblnk_is_leaf</a>(sblnk_iter itr)
<a name="l00402"></a>00402 {
<a name="l00403"></a>00403     <span class="keywordflow">return</span> !itr-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a> &amp;&amp; !itr-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a>;
<a name="l00404"></a>00404 }
<a name="l00405"></a>00405 
<a name="l00417"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaf89a0ca64b9f9d4c9ce25487e19f1267">00417</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaf89a0ca64b9f9d4c9ce25487e19f1267" title="链接两个节点">sblnk_link</a>(sblnk_iter newly, sblnk_iter parent, 
<a name="l00418"></a>00418                               sblnk_iter* plink)
<a name="l00419"></a>00419 {
<a name="l00420"></a>00420     <span class="comment">/* 简单地将newly节点链接到parent节点下 */</span>
<a name="l00421"></a>00421     *plink = newly;
<a name="l00422"></a>00422     newly-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a> = NULL;
<a name="l00423"></a>00423     newly-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a> = NULL;
<a name="l00424"></a>00424     newly-&gt;<a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06" title="父节点">parent</a> = parent;
<a name="l00425"></a>00425 }
<a name="l00426"></a>00426 
<a name="l00433"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga8b3e8e509ef35403fb8f80a7e9bba5fd">00433</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga8b3e8e509ef35403fb8f80a7e9bba5fd" title="设置当前节点子树大小域">sblnk_set_size</a>(sblnk_node* node, <span class="keywordtype">size_t</span> size)
<a name="l00434"></a>00434 {
<a name="l00435"></a>00435     node-&gt;<a class="code" href="struct____sblnk__node.html#a854352f53b148adc24983a58a1866d66" title="子树大小">size</a> = size;
<a name="l00436"></a>00436 }
<a name="l00437"></a>00437 
<a name="l00445"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga570d0615947869f006d217e1c5b68685">00445</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga570d0615947869f006d217e1c5b68685" title="仅在node不为空时，设置node的父节点">sblnk_set_parent_if</a>(sblnk_node* node, sblnk_node* parent)
<a name="l00446"></a>00446 {
<a name="l00447"></a>00447     <span class="keywordflow">if</span> (node)
<a name="l00448"></a>00448         node-&gt;<a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06" title="父节点">parent</a> = parent;
<a name="l00449"></a>00449 }
<a name="l00450"></a>00450 
<a name="l00456"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gab1ec464fdb4d8c762425fc30448423f4">00456</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gab1ec464fdb4d8c762425fc30448423f4" title="初始化节点">sblnk_node_init</a>(sblnk_node* node)
<a name="l00457"></a>00457 {
<a name="l00458"></a>00458     node-&gt;<a class="code" href="struct____sblnk__node.html#a0ded92074b972d02336b48bb31f92d06" title="父节点">parent</a> = NULL;
<a name="l00459"></a>00459     node-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a> = NULL;
<a name="l00460"></a>00460     node-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a> = NULL;
<a name="l00461"></a>00461     node-&gt;<a class="code" href="struct____sblnk__node.html#a854352f53b148adc24983a58a1866d66" title="子树大小">size</a> = 0;
<a name="l00462"></a>00462 }
<a name="l00463"></a>00463 
<a name="l00472"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga69c71476514321a8f598476d19a98881">00472</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga69c71476514321a8f598476d19a98881" title="用新节点替换旧节点">sblnk_iter_replace</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_iter victim, 
<a name="l00473"></a>00473                                      sblnk_iter newly)
<a name="l00474"></a>00474 {
<a name="l00475"></a>00475     sblnk_iter parent = <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2b84c86f24154173661a6b15a7f8392f" title="得到父节点">sblnk_parent</a>(victim);
<a name="l00476"></a>00476     
<a name="l00477"></a>00477     <span class="comment">/* 将victim父节点的孩子设为newly */</span>
<a name="l00478"></a>00478     <span class="keywordflow">if</span> (parent) {
<a name="l00479"></a>00479         <span class="keywordflow">if</span> (victim == parent-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a>)
<a name="l00480"></a>00480             parent-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a> = newly;
<a name="l00481"></a>00481         <span class="keywordflow">else</span>
<a name="l00482"></a>00482             parent-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a> = newly;
<a name="l00483"></a>00483     } <span class="keywordflow">else</span>
<a name="l00484"></a>00484         root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a> = newly;
<a name="l00485"></a>00485     
<a name="l00486"></a>00486     <span class="comment">/* 重新确定victim孩子节点的父节点为newly */</span>
<a name="l00487"></a>00487     <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga570d0615947869f006d217e1c5b68685" title="仅在node不为空时，设置node的父节点">sblnk_set_parent_if</a>(victim-&gt;<a class="code" href="struct____sblnk__node.html#a319a145de7e3c1952d51528efc35b0d7" title="左子节点">left</a>, newly);
<a name="l00488"></a>00488     <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga570d0615947869f006d217e1c5b68685" title="仅在node不为空时，设置node的父节点">sblnk_set_parent_if</a>(victim-&gt;<a class="code" href="struct____sblnk__node.html#a1f41e1366c9345596b528fc6aee3187d" title="右子节点">right</a>, newly);
<a name="l00489"></a>00489     
<a name="l00490"></a>00490     <span class="comment">/* 替换节点成员 */</span>
<a name="l00491"></a>00491     *newly = *victim;
<a name="l00492"></a>00492 }
<a name="l00493"></a>00493 
<a name="l00500"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa1ba8199bbb594b59527ee4e8aa1adc4">00500</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa1ba8199bbb594b59527ee4e8aa1adc4" title="用新的树根替换旧树根">sblnk_replace</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* victim, <a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* newly)
<a name="l00501"></a>00501 {
<a name="l00502"></a>00502     newly-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a> = victim-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>;
<a name="l00503"></a>00503 }
<a name="l00504"></a>00504 
<a name="l00511"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa043d0e47f0f41e427e86d0da566ae97">00511</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa043d0e47f0f41e427e86d0da566ae97" title="交换两个树">sblnk_swap</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* a, <a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* b)
<a name="l00512"></a>00512 {
<a name="l00513"></a>00513     sblnk_iter t = a-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>; a-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a> = b-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>; b-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a> = t;
<a name="l00514"></a>00514 }
<a name="l00515"></a>00515 
<a name="l00525"></a>00525 NV_API <span class="keywordtype">int</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga196f18e5e1116a4b96e7dcee0d12db2f" title="判断一个节点是否存在于树中">sblnk_exist</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, sblnk_iter itr);
<a name="l00526"></a>00526 
<a name="l00535"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga6a4cbf6a15d0b9d42017614238b1e0d9">00535</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga6a4cbf6a15d0b9d42017614238b1e0d9" title="得到正向索引对应的节点的迭代器">sblnk_at</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, <span class="keywordtype">size_t</span> index)
<a name="l00536"></a>00536 {
<a name="l00537"></a>00537     <span class="keywordflow">return</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga1bc124c75a57627dad7af5cff4588bdb" title="给迭代器增加一段距离或减小一段距离">sblnk_advance</a>(<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gac564d8aed1991fbf0c3f55bbb4edc709" title="得到树的最左端节点">sblnk_front</a>(root), index);
<a name="l00538"></a>00538 }
<a name="l00539"></a>00539 
<a name="l00549"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga93f0b4b21761403ead1bd49a0541b412">00549</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga93f0b4b21761403ead1bd49a0541b412" title="得到逆向索引对应的节点的迭代器">sblnk_reverse_at</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, <span class="keywordtype">size_t</span> index)
<a name="l00550"></a>00550 {
<a name="l00551"></a>00551     <span class="keywordflow">return</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga1bc124c75a57627dad7af5cff4588bdb" title="给迭代器增加一段距离或减小一段距离">sblnk_advance</a>(<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaef991ca0f842b85f5ac97941545c025e" title="得到树的最右端节点">sblnk_back</a>(root), -(<span class="keywordtype">int</span>)(index));
<a name="l00552"></a>00552 }
<a name="l00553"></a>00553 
<a name="l00561"></a>00561 NV_API sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gac564d8aed1991fbf0c3f55bbb4edc709" title="得到树的最左端节点">sblnk_front</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root);
<a name="l00562"></a>00562 
<a name="l00570"></a>00570 NV_API sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaef991ca0f842b85f5ac97941545c025e" title="得到树的最右端节点">sblnk_back</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root);
<a name="l00571"></a>00571 
<a name="l00579"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaef5561f1a6e6865d29d001bb05b81d2f">00579</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaef5561f1a6e6865d29d001bb05b81d2f" title="得到指向正向起始位置的迭代器">sblnk_begin</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00580"></a>00580 {
<a name="l00581"></a>00581     <span class="keywordflow">return</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gac564d8aed1991fbf0c3f55bbb4edc709" title="得到树的最左端节点">sblnk_front</a>(root);
<a name="l00582"></a>00582 }
<a name="l00583"></a>00583 
<a name="l00590"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gadb2f7b60f1f386ec7c25e5ad89ac5be2">00590</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gadb2f7b60f1f386ec7c25e5ad89ac5be2" title="得到指向正向终止位置的迭代器">sblnk_end</a>()
<a name="l00591"></a>00591 {
<a name="l00592"></a>00592     <span class="keywordflow">return</span> NULL;
<a name="l00593"></a>00593 }
<a name="l00594"></a>00594 
<a name="l00602"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9deff7b11edfb7af28fa3e50455628bd">00602</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9deff7b11edfb7af28fa3e50455628bd" title="得到当前迭代器的正向终止位置">sblnk_end_of</a>(sblnk_iter cur)
<a name="l00603"></a>00603 {
<a name="l00604"></a>00604     <span class="keywordflow">return</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga6bd50f36005fd9ae83c23d0446f79b90" title="得到当前节点的中序后继节点">sblnk_next</a>(cur);
<a name="l00605"></a>00605 }
<a name="l00606"></a>00606 
<a name="l00614"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9d5419a171f3b9789e64620f24f122db">00614</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9d5419a171f3b9789e64620f24f122db" title="得到指向逆向起始位置的迭代器">sblnk_rbegin</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root)
<a name="l00615"></a>00615 {
<a name="l00616"></a>00616     <span class="keywordflow">return</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaef991ca0f842b85f5ac97941545c025e" title="得到树的最右端节点">sblnk_back</a>(root);
<a name="l00617"></a>00617 }
<a name="l00618"></a>00618 
<a name="l00625"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga1a03a537ea85b8ffdd4a8b889939df2e">00625</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga1a03a537ea85b8ffdd4a8b889939df2e" title="得到指向逆向终止位置的迭代器">sblnk_rend</a>()
<a name="l00626"></a>00626 {
<a name="l00627"></a>00627     <span class="keywordflow">return</span> NULL;
<a name="l00628"></a>00628 }
<a name="l00629"></a>00629 
<a name="l00637"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2f9706ee0e9db48af435fc2316ff8999">00637</a> <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga2f9706ee0e9db48af435fc2316ff8999" title="得到当前迭代器的逆向终止位置">sblnk_rend_of</a>(sblnk_iter cur)
<a name="l00638"></a>00638 {
<a name="l00639"></a>00639     <span class="keywordflow">return</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga57c68614024a3a41fc416490d9be9f0e" title="得到当前节点的中序前驱节点">sblnk_prev</a>(cur);
<a name="l00640"></a>00640 }
<a name="l00641"></a>00641 
<a name="l00649"></a>00649 NV_API sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga6bd50f36005fd9ae83c23d0446f79b90" title="得到当前节点的中序后继节点">sblnk_next</a>(sblnk_iter cur);
<a name="l00650"></a>00650 
<a name="l00658"></a>00658 NV_API sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga57c68614024a3a41fc416490d9be9f0e" title="得到当前节点的中序前驱节点">sblnk_prev</a>(sblnk_iter cur);
<a name="l00659"></a>00659 
<a name="l00667"></a>00667 NV_API sblnk_iter <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga1bc124c75a57627dad7af5cff4588bdb" title="给迭代器增加一段距离或减小一段距离">sblnk_advance</a>(sblnk_iter cur, <span class="keywordtype">int</span> dist);
<a name="l00668"></a>00668 
<a name="l00679"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga0c4657b6e570cc5db49102522b162a80">00679</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga0c4657b6e570cc5db49102522b162a80" title="清空树">sblnk_clear</a>(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga4af164439491a4ca79da044842819995" title="单参数回调函数指针">sblnk_pr1</a> erase_handler)
<a name="l00680"></a>00680 {
<a name="l00681"></a>00681     <span class="keywordflow">if</span> (!<a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga8b2053d41e14a1f256bbf06168ec97fe" title="判断树是否为空">sblnk_empty</a>(root))
<a name="l00682"></a>00682         <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9028bdd9eb8000ed59e1a512af48a37a" title="移除区域内的节点">sblnk_erases</a>(root, <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gac564d8aed1991fbf0c3f55bbb4edc709" title="得到树的最左端节点">sblnk_front</a>(root), NULL, erase_handler);
<a name="l00683"></a>00683 }
<a name="l00684"></a>00684 
<a name="l00685"></a>00685 <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter __sblnk_inc_later(sblnk_iter cur, sblnk_iter* p)
<a name="l00686"></a>00686 {
<a name="l00687"></a>00687     *p = <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga6bd50f36005fd9ae83c23d0446f79b90" title="得到当前节点的中序后继节点">sblnk_next</a>(cur);
<a name="l00688"></a>00688     <span class="keywordflow">return</span> cur;
<a name="l00689"></a>00689 }
<a name="l00690"></a>00690 
<a name="l00691"></a>00691 <span class="keyword">static</span> <span class="keyword">inline</span> sblnk_iter __sblnk_dec_later(sblnk_iter cur, sblnk_iter* p)
<a name="l00692"></a>00692 {
<a name="l00693"></a>00693     *p = <a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga57c68614024a3a41fc416490d9be9f0e" title="得到当前节点的中序前驱节点">sblnk_prev</a>(cur);
<a name="l00694"></a>00694     <span class="keywordflow">return</span> cur;
<a name="l00695"></a>00695 }
<a name="l00696"></a>00696 
<a name="l00707"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga8977419721a1b85610adb2634f136983">00707</a> <span class="preprocessor">#define sblnk_inc(itr)          ((itr) = sblnk_next(itr))</span>
<a name="l00708"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga39f8da7ba1e44269c6ec1e7fb0125165">00708</a> <span class="preprocessor"></span><span class="preprocessor">#define sblnk_dec(itr)          ((itr) = sblnk_prev(itr))</span>
<a name="l00709"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gabf3d458264ca15b1c03e37cdbfc12049">00709</a> <span class="preprocessor"></span><span class="preprocessor">#define sblnk_inc_later(itr)    __sblnk_inc_later(itr, &amp;(itr))</span>
<a name="l00710"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga348aac8583fc25ed39891d60d8790d63">00710</a> <span class="preprocessor"></span><span class="preprocessor">#define sblnk_dec_later(itr)    __sblnk_dec_later(itr, &amp;(itr))</span>
<a name="l00711"></a>00711 <span class="preprocessor"></span>
<a name="l00721"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga1d98dcdb6f4a7ed1ef8de3cf977c640f">00721</a> <span class="preprocessor">#define sblnk_foreach(_begin, _end, fn, type, member) do {\</span>
<a name="l00722"></a>00722 <span class="preprocessor">        sblnk_iter _q_e = (_end);                           \</span>
<a name="l00723"></a>00723 <span class="preprocessor">        sblnk_iter _q_f = (_begin);                         \</span>
<a name="l00724"></a>00724 <span class="preprocessor">        while (_q_f != _q_e) {                              \</span>
<a name="l00725"></a>00725 <span class="preprocessor">            type * _q_t = container_of(_q_f, type, member); \</span>
<a name="l00726"></a>00726 <span class="preprocessor">            sblnk_inc(_q_f);                                \</span>
<a name="l00727"></a>00727 <span class="preprocessor">            fn(_q_t);                                       \</span>
<a name="l00728"></a>00728 <span class="preprocessor">        }                                                   \</span>
<a name="l00729"></a>00729 <span class="preprocessor">    } while (0)</span>
<a name="l00730"></a>00730 <span class="preprocessor"></span>
<a name="l00740"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga65b3b2936facf1872cb83f0f13734740">00740</a> <span class="preprocessor">#define sblnk_reverse_foreach(_rbegin, _rend, fn, type, member) do {\</span>
<a name="l00741"></a>00741 <span class="preprocessor">        sblnk_iter _q_e = (_rend);                          \</span>
<a name="l00742"></a>00742 <span class="preprocessor">        sblnk_iter _q_f = (_rbegin);                        \</span>
<a name="l00743"></a>00743 <span class="preprocessor">        while (_q_f != _q_e) {                              \</span>
<a name="l00744"></a>00744 <span class="preprocessor">            type * _q_t = container_of(_q_f, type, member); \</span>
<a name="l00745"></a>00745 <span class="preprocessor">            sblnk_dec(_q_f);                                \</span>
<a name="l00746"></a>00746 <span class="preprocessor">            fn(_q_t);                                       \</span>
<a name="l00747"></a>00747 <span class="preprocessor">        }                                                   \</span>
<a name="l00748"></a>00748 <span class="preprocessor">    } while (0)</span>
<a name="l00749"></a>00749 <span class="preprocessor"></span>
<a name="l00750"></a>00750 NV_API <span class="keywordtype">void</span> __do_sblnk_recurse_foreach(sblnk_iter cur, 
<a name="l00751"></a>00751                             <span class="keywordtype">void</span> (*fn)(<span class="keywordtype">void</span>*), <span class="keywordtype">size_t</span> offset);
<a name="l00752"></a>00752 
<a name="l00753"></a>00753 NV_API <span class="keywordtype">void</span> __do_sblnk_recurse_reverse_foreach(sblnk_iter cur, 
<a name="l00754"></a>00754                             <span class="keywordtype">void</span> (*fn)(<span class="keywordtype">void</span>*), <span class="keywordtype">size_t</span> offset);
<a name="l00755"></a>00755 
<a name="l00756"></a>00756 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> __sblnk_recurse_foreach(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, 
<a name="l00757"></a>00757                             <span class="keywordtype">void</span> (*fn)(<span class="keywordtype">void</span>*), <span class="keywordtype">size_t</span> offset)
<a name="l00758"></a>00758 {
<a name="l00759"></a>00759     <span class="keywordflow">if</span> (fn)
<a name="l00760"></a>00760         __do_sblnk_recurse_foreach(root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>, fn, offset);
<a name="l00761"></a>00761 }
<a name="l00762"></a>00762 
<a name="l00763"></a>00763 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> __sblnk_recurse_reverse_foreach(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, 
<a name="l00764"></a>00764                                 <span class="keywordtype">void</span> (*fn)(<span class="keywordtype">void</span>*), <span class="keywordtype">size_t</span> offset)
<a name="l00765"></a>00765 {
<a name="l00766"></a>00766     <span class="keywordflow">if</span> (fn)
<a name="l00767"></a>00767         __do_sblnk_recurse_reverse_foreach(root-&gt;<a class="code" href="structsblnk__root.html#a5b775a8ecc9de098808ca8c7f1e365c4" title="树根节点">node</a>, fn, offset);
<a name="l00768"></a>00768 }
<a name="l00769"></a>00769 
<a name="l00778"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gaa132699dadc3b4d6cf77a99778d502f8">00778</a> <span class="preprocessor">#define SBLNK_RECURSE_PROC(name, type, param) void name(type * param)</span>
<a name="l00779"></a>00779 <span class="preprocessor"></span>
<a name="l00803"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gac178eb532821851b0ccf99e70f89b857">00803</a> <span class="preprocessor">#define sblnk_recurse_foreach(root, fn, type, member) \</span>
<a name="l00804"></a>00804 <span class="preprocessor">    __sblnk_recurse_foreach(root, (void (*)(void*))(fn), \</span>
<a name="l00805"></a>00805 <span class="preprocessor">            offset_of(type, member))</span>
<a name="l00806"></a>00806 <span class="preprocessor"></span>
<a name="l00816"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga0fe27927107ab630345681e6d37096c5">00816</a> <span class="preprocessor">#define sblnk_recurse_reverse_foreach(root, fn, type, member) \</span>
<a name="l00817"></a>00817 <span class="preprocessor">    __sblnk_recurse_reverse_foreach(root, (void (*)(void*))(fn), \</span>
<a name="l00818"></a>00818 <span class="preprocessor">            offset_of(type, member))</span>
<a name="l00819"></a>00819 <span class="preprocessor"></span>
<a name="l00848"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#gac3f9e0c692066835cd57f562954e3d54">00848</a> <span class="preprocessor">#define sblnk_search(root, newly, greater, res, type, member) do {\</span>
<a name="l00849"></a>00849 <span class="preprocessor">        sblnk_root* _k_r = (root);                              \</span>
<a name="l00850"></a>00850 <span class="preprocessor">        type * _k_pn = (newly);                                 \</span>
<a name="l00851"></a>00851 <span class="preprocessor">        sblnk_iter _k_p = _k_r-&gt;node;                           \</span>
<a name="l00852"></a>00852 <span class="preprocessor">        (res) = NULL;                                           \</span>
<a name="l00853"></a>00853 <span class="preprocessor">        while (_k_p) {                                          \</span>
<a name="l00854"></a>00854 <span class="preprocessor">            type * _k_pr = container_of(_k_p, type, member);    \</span>
<a name="l00855"></a>00855 <span class="preprocessor">            if (greater(_k_pr, _k_pn))                          \</span>
<a name="l00856"></a>00856 <span class="preprocessor">                _k_p = _k_p-&gt;left;                              \</span>
<a name="l00857"></a>00857 <span class="preprocessor">            else if (greater(_k_pn, _k_pr))                     \</span>
<a name="l00858"></a>00858 <span class="preprocessor">                _k_p = _k_p-&gt;right;                             \</span>
<a name="l00859"></a>00859 <span class="preprocessor">            else {                                              \</span>
<a name="l00860"></a>00860 <span class="preprocessor">                (res) = _k_p; break;                            \</span>
<a name="l00861"></a>00861 <span class="preprocessor">            }                                                   \</span>
<a name="l00862"></a>00862 <span class="preprocessor">        }                                                       \</span>
<a name="l00863"></a>00863 <span class="preprocessor">    } while (0)</span>
<a name="l00864"></a>00864 <span class="preprocessor"></span>
<a name="l00893"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga9610155afa17d2c85e71f9548e255f6c">00893</a> <span class="preprocessor">#define sblnk_insert(root, newly, greater, res, type, member) do {\</span>
<a name="l00894"></a>00894 <span class="preprocessor">        sblnk_root* _k_r = (root);                                      \</span>
<a name="l00895"></a>00895 <span class="preprocessor">        sblnk_iter* _k_pp = &amp;_k_r-&gt;node;                                \</span>
<a name="l00896"></a>00896 <span class="preprocessor">        sblnk_iter _k_n = (newly);                                      \</span>
<a name="l00897"></a>00897 <span class="preprocessor">        sblnk_iter _k_p;                                                \</span>
<a name="l00898"></a>00898 <span class="preprocessor">        type * _k_pn = container_of(_k_n, type, member);                \</span>
<a name="l00899"></a>00899 <span class="preprocessor">        (res) = 1;                                                      \</span>
<a name="l00900"></a>00900 <span class="preprocessor">        sblnk_node_init(_k_n);                                          \</span>
<a name="l00901"></a>00901 <span class="preprocessor">        while (*_k_pp) {                                                \</span>
<a name="l00902"></a>00902 <span class="preprocessor">            type * _k_pr = container_of(_k_p = *_k_pp, type, member);   \</span>
<a name="l00903"></a>00903 <span class="preprocessor">            if (greater(_k_pr, _k_pn))                                  \</span>
<a name="l00904"></a>00904 <span class="preprocessor">                _k_pp = &amp;_k_p-&gt;left;                                    \</span>
<a name="l00905"></a>00905 <span class="preprocessor">            else if (greater(_k_pn, _k_pr))                             \</span>
<a name="l00906"></a>00906 <span class="preprocessor">                _k_pp = &amp;_k_p-&gt;right;                                   \</span>
<a name="l00907"></a>00907 <span class="preprocessor">            else {                                                      \</span>
<a name="l00908"></a>00908 <span class="preprocessor">                (res) = 0; break;                                       \</span>
<a name="l00909"></a>00909 <span class="preprocessor">            }                                                           \</span>
<a name="l00910"></a>00910 <span class="preprocessor">        }                                                               \</span>
<a name="l00911"></a>00911 <span class="preprocessor">        if (res) {                                                      \</span>
<a name="l00912"></a>00912 <span class="preprocessor">            sblnk_link(_k_n, _k_p, _k_pp);                              \</span>
<a name="l00913"></a>00913 <span class="preprocessor">            sblnk_maintain(_k_r, _k_n, _k_p);                           \</span>
<a name="l00914"></a>00914 <span class="preprocessor">        }                                                               \</span>
<a name="l00915"></a>00915 <span class="preprocessor">    } while (0)</span>
<a name="l00916"></a>00916 <span class="preprocessor"></span>
<a name="l00917"></a>00917 NV_API <span class="keywordtype">void</span> __sblnk_serialize(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, <span class="keywordtype">void</span>** buf, <span class="keywordtype">size_t</span> offset);
<a name="l00918"></a>00918 
<a name="l00919"></a>00919 NV_API <span class="keywordtype">void</span> __sblnk_deserialize(<a class="code" href="structsblnk__root.html" title="树根">sblnk_root</a>* root, <span class="keywordtype">char</span>** buf, 
<a name="l00920"></a>00920                                     <span class="keywordtype">size_t</span> cnt, <span class="keywordtype">size_t</span> offset);
<a name="l00921"></a>00921 
<a name="l00931"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga87d6d30a36e8688e2bbcc5c349dc4bd5">00931</a> <span class="preprocessor">#define sblnk_serialize(root, buf, type, member) \</span>
<a name="l00932"></a>00932 <span class="preprocessor">    __sblnk_serialize(root, (void**)(buf), offset_of(type, member))</span>
<a name="l00933"></a>00933 <span class="preprocessor"></span>
<a name="l00944"></a><a class="code" href="group___xE5_xA4_xA7_xE5_xB0_x8F_xE5_xB9_xB3_xE8_xA1_xA1_xE6_xA0_x91.html#ga4bae9dc037366733482ee79511cbc2c4">00944</a> <span class="preprocessor">#define sblnk_deserialize(root, buf, cnt, type, member) \</span>
<a name="l00945"></a>00945 <span class="preprocessor">    __sblnk_deserialize(root, (char**)(buf), cnt, offset_of(type, member))</span>
<a name="l00946"></a>00946 <span class="preprocessor"></span>
<a name="l00949"></a>00949 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00950"></a>00950 <span class="preprocessor"></span>}
<a name="l00951"></a>00951 <span class="preprocessor">#endif  </span><span class="comment">/* #ifdef __cplusplus */</span>
<a name="l00952"></a>00952 
<a name="l00953"></a>00953 <span class="preprocessor">#endif  </span><span class="comment">/* #ifndef __NV_SBLNK__ */</span>
<a name="l00954"></a>00954 
</pre></div></div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:37 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
